package com.edu.exam.entity.curriculum.structure;

/**
 * 知识点基础分类枚举
 * 所属模块：B-01-02 课程结构管理子模块
 * 对应设计文档：B-01-02-02-子模块类图设计.md
 *
 * 定义知识点的基础分类，用于区分知识点的重要程度和类型
 * 与F-08基础数据管理模块的分类标准保持一致
 *
 * @author System
 * @version 1.0.0
 */
public enum KnowledgePointCategoryEnum {
    /**
     * 基础知识点 - 课程的基础概念和原理
     */
    BASIC("BASIC", "基础", "#52c41a"),

    /**
     * 重点知识点 - 课程的核心内容，考试重点
     */
    KEY("KEY", "重点", "#faad14"),

    /**
     * 难点知识点 - 学生理解和掌握较难的内容
     */
    DIFFICULT("DIFFICULT", "难点", "#f5222d"),

    /**
     * 拓展知识点 - 课程相关的拓展内容
     */
    EXTENDED("EXTENDED", "拓展", "#1890ff");

    private final String code;
    private final String categoryName;
    private final String color;

    KnowledgePointCategoryEnum(String code, String categoryName, String color) {
        this.code = code;
        this.categoryName = categoryName;
        this.color = color;
    }

    public String getCode() {
        return code;
    }

    public String getCategoryName() {
        return categoryName;
    }

    public String getColor() {
        return color;
    }

    /**
     * 根据代码查找枚举
     *
     * @param code 分类代码
     * @return 对应的枚举值，如果未找到返回null
     */
    public static KnowledgePointCategoryEnum fromCode(String code) {
        for (KnowledgePointCategoryEnum category : KnowledgePointCategoryEnum.values()) {
            if (category.getCode().equals(code)) {
                return category;
            }
        }
        return null;
    }
}